package tech.aistar.prj.mapper;

import org.apache.ibatis.annotations.*;
import tech.aistar.prj.entity.Pet;

import java.util.List;

/**
 * 本类功能:
 *
 * @author cxylk
 * @date 2020/9/16 20:03
 */
public interface PetMapper {
    @Select("select * from pet")
    List<Pet> findAll();

    /**
     * 多重组合条件查询的时候
     * 参数选择：
     * 1.散列的配合注解 - 不利于扩展的，如果后期需要加入新的查询条件，接口还需要修改
     *
     * 2.Map集合Map<String,Object>
     *
     * 3.使用DTO或者VO对象 - 自定义查询类[包含类查询的属性条件]
     *
     * a.根据宠物的类型进行精确查找
     * b.根据宠物的名称进行模糊查找
     *
     * c.上述两个条件同时成立
     * @return
     */
    List<Pet> search(@Param("typeId") Long typeId, @Param("name") String name);

    @Delete("delete from pet where id=#{value}")
    int delById(Integer id);

    @Insert("insert into pet(name,age,birthday,img_url,pet_type_id) values(#{name},#{age},#{birthday},#{imgUrl},#{petTypeId})")
    void save(Pet pet);

    @Select("select * from pet where id=#{value}")
    Pet findById(Integer id);

    @Update("update pet set name=#{name},age=#{age},birthday=#{birthday},img_url=#{imgUrl},pet_type_id=#{petTypeId} where id=#{id}")
    int update(Pet pet);
}
